{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# model and environment part\n",
    "\n",
    "import numpy as np\n",
    "from collections import defaultdict\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "class WindyGridworld():\n",
    "    def __init__(self, is_eight_action = False, ninth_action = False):\n",
    "        # origin is defined as left_lower corner. and start from 1\n",
    "        # namely cols are : 1 2 3 4 5 6 7 8 9 10\n",
    "        # rows are : 1 2 3 4 5 6 7\n",
    "        # we start from (1, 4)\n",
    "        self.xlimit = 10\n",
    "        self.ylimit = 7\n",
    "        self.is_eight_action = is_eight_action\n",
    "        self.ninth_action = ninth_action\n",
    "        # we use explicit dictionary instead of function to accelerate training\n",
    "        self.wind_dict = { 1: 0, 2: 0, 3: 0, 4: 1, 5: 1,\n",
    "                           6: 1, 7: 2, 8: 2, 9: 1, 10: 0 }\n",
    "\n",
    "    def step(self, pos, action):\n",
    "        x, y = pos\n",
    "        wind = self.wind_dict[x]\n",
    "        if action == 'left':\n",
    "            next_state = max(1, x-1), min(y+wind, self.ylimit)\n",
    "        elif action == 'right':\n",
    "            next_state = min(self.xlimit, x+1), min(y+wind, self.ylimit)\n",
    "        elif action == 'up':\n",
    "            next_state = x, min(y+wind+1, self.ylimit)\n",
    "        elif action == 'down':\n",
    "            next_state = x, max(0, min(y+wind-1, self.ylimit))\n",
    "        else:\n",
    "            if self.is_eight_action:\n",
    "                if action == 'left-up':\n",
    "                    next_state = max(1, x-1), min(y+wind+1, self.ylimit)\n",
    "                elif action == 'left-down':\n",
    "                    next_state = max(1, x-1), max(0,min(y+wind-1, self.ylimit))\n",
    "                elif action == 'right-up':\n",
    "                    next_state = min(self.xlimit, x+1), min(y+wind+1, self.ylimit)\n",
    "                elif action == 'right-down':\n",
    "                    next_state = min(self.xlimit, x+1), max(0,min(y+wind-1, self.ylimit))\n",
    "                else:\n",
    "                    if self.ninth_action:\n",
    "                        if action == 'stay':\n",
    "                            next_state = x, max(0,min(y+wind, self.ylimit))\n",
    "                        else:\n",
    "                            raise ValueError\n",
    "                    else:\n",
    "                        raise ValueError\n",
    "            else:\n",
    "                raise ValueError\n",
    "        if next_state == (8, 4):\n",
    "            return next_state, 0\n",
    "        else:\n",
    "            return next_state, -1\n",
    "\n",
    "class Agent():\n",
    "    def __init__(self, alpha=0.5, gamma=1, eps=0.1, is_eight_action = False, ninth_action = False):\n",
    "        self.alpha = alpha\n",
    "        self.gamma = gamma\n",
    "        self.eps = eps\n",
    "        self.Q = defaultdict(int)\n",
    "        if not is_eight_action:\n",
    "            self.action_space= ['left', 'right', 'up', 'down']\n",
    "        else:\n",
    "            if ninth_action:\n",
    "                self.action_space= ['left', 'right', 'up', 'down',\n",
    "                                'left-up', 'left-down', 'right-up', 'right-down', 'stay']\n",
    "            else:\n",
    "                self.action_space= ['left', 'right', 'up', 'down',\n",
    "                                'left-up', 'left-down', 'right-up', 'right-down']\n",
    "    def greedy(self, state):\n",
    "        max_action = self.action_space[0]\n",
    "        max_Q = self.Q[state, max_action]\n",
    "        for action in self.action_space:\n",
    "            if self.Q[state, action] > max_Q:\n",
    "                max_action = action\n",
    "                max_Q = self.Q[state, action]\n",
    "        return max_action\n",
    "\n",
    "    def e_greedy(self, state):\n",
    "        if np.random.random() > self.eps:\n",
    "            return self.greedy(state)\n",
    "        else:\n",
    "            random_action = np.random.choice(self.action_space)\n",
    "            return random_action\n",
    "\n",
    "    def update(self, R, state, action, next_state, next_action):\n",
    "        if R == 0:\n",
    "            next_Q = 0\n",
    "        else:\n",
    "            next_Q = self.Q[next_state, next_action]\n",
    "        self.Q[state, action] += self.alpha * ( R + self.gamma*next_Q - self.Q[state,action] )\n",
    "\n",
    "def game(is_eight_action = False, ninth_action = False):\n",
    "    env = WindyGridworld(is_eight_action = is_eight_action, ninth_action = ninth_action)\n",
    "    EPISODE = 200\n",
    "    hist = []\n",
    "    agent = Agent(is_eight_action = is_eight_action, ninth_action = ninth_action)\n",
    "    for episode in range(EPISODE):\n",
    "        state = 1, 4\n",
    "        action = agent.e_greedy(state)\n",
    "        for step in range(5000):\n",
    "            next_state, R = env.step(state, action)\n",
    "            next_action = agent.e_greedy(next_state)\n",
    "            agent.update(R, state, action, next_state, next_action)\n",
    "            state = next_state\n",
    "            action = next_action\n",
    "            if R == 0:\n",
    "                # means next state is terminal\n",
    "                break\n",
    "        # turn off e-greedy to test\n",
    "        state = 1, 4\n",
    "        action = agent.greedy(state)\n",
    "        for step in range(5000):\n",
    "            next_state, R = env.step(state, action)\n",
    "            next_action = agent.greedy(next_state)\n",
    "            agent.update(R, state, action, next_state, next_action)\n",
    "            state = next_state\n",
    "            action = next_action\n",
    "            if R == 0:\n",
    "                hist.append(step)\n",
    "                # means next state is terminal\n",
    "                break\n",
    "    return hist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "outputs": [],
   "source": [
    "# outer loop part\n",
    "hist_4 = []\n",
    "hist_8 = []\n",
    "hist_9 = []\n",
    "for experiment in range(200):\n",
    "    hist_4.append(game(is_eight_action = False, ninth_action = False))\n",
    "    hist_8.append(game(is_eight_action = True, ninth_action = False))\n",
    "    hist_9.append(game(is_eight_action = True, ninth_action = True))\n",
    "hist_4 = np.mean(hist_4, axis = 0)\n",
    "hist_8 = np.mean(hist_8, axis = 0)\n",
    "hist_9 = np.mean(hist_9, axis = 0)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 720x720 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmwAAAJpCAYAAAAQWG6WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdd3gU1f7H8c8moQQIJXAxtIQiVZByRSxElKKIgqj4E1TgakAFy1VQQeGKBb2iUhS8qIAIGEFEKVIEwUiTEgSkh2poUkI6CZByfn8kWVkSSMLMJAHfr+eZh+zM7OzZySb58J1zzrgkGQEAAKDI8irsBgAAAODSCGwAAABFHIENAACgiCOwAQAAFHEENgAAgCKOwAYAAFDEEdgAXLbJkyfrwIEDhd2Mq1abNm1kjFGbNm0KuynZHDhwQJMnT75ijmunsLAwhYWF2b5vQTHGaNiwYbbvC2cR2OCIO+64Q8YYGWNUp06dwm6Om7+/v0aOHKndu3crKSlJkZGRCg0NVYMGDQq7aW4lS5bUe++9p/379+vMmTM6cOCA3n77bZUoUaJQ2tO8eXMNGzZMQUFBhfL6sNeJEye0bt26bOsbNWokY4ySkpJUrFgxj21eXl6Kj4/XypUrC6qZtitbtqxeffVVrV27VjExMTp79qz+/PNPLVq0SE899ZRKlixZ2E0ELsmnsBuAq0+xYsX0ySefKDExUWXKlCns5rgVK1ZMy5cvV+3atfXpp59qx44dqlWrlvr37697771X119/vSIjIwu1jV5eXlq0aJGCg4M1adIk/fbbb2revLleffVVNW7cWPfff3+Bt6lFixZ644039Msvv2Q7P3379pWXF//vc8qKFStUsmRJnTt3zrZjrlq1Svfee69Kly6t06dPu9ffdtttSklJka+vr2688UatXr3ava1Fixby8/PTihUr3Ovq16+v9PR029rlpMaNG2vBggWqUqWKZs+era+//lrx8fGqXLmygoODNW7cON1xxx3q3r17no535513OtxiIDsCG2w3cOBA+fv7a8KECXrxxRcLuzlu7du3V+PGjfX8889r7Nix7vXr16/X3Llz9dBDD+nDDz8sxBZK999/v26//XYNHjxYI0aMcK/fvXu3Ro0apbvuukuLFy8uxBZ6Sk1NLewmXNWMMTp79qytx1yxYoXuv/9+3XzzzVq6dKl7fXBwsJYvX64GDRooODjYI7AFBwdLkpYvX+5eZ2eIdFKZMmU0b948lSpVSq1atdKmTZs8tr///vuqXbu2unTpkuuxSpYsqTNnziglJcWp5jrGy8tL3t7eV2TbkYH/GsNWgYGBGjp0qAYPHqy4uLg8Pcfb21vHjx/XDz/8kOP2ZcuW6dChQ3K5XJKkpk2bat68eTp27JiSk5MVGRmpb7/9VjVq1Ljk65QtW1aSdPToUY/1WY/PrzbkZOPGjdq6dWuO2yZNmqSkpCT5+flJkmrVqqXQ0FAdPnxYZ86c0ZEjRzR//nxdf/31l3yN2267TZI0bdo0j/VZjx999NFLPl+SWrdurdDQUO3fv1/Jyck6efKkvv32W9WtWzfH/Tt37qywsDDFxcUpMTFRW7Zs0aBBgyRJw4YN08SJEyVJv/zyi/syd+/evSVdvA/bY489pt9++01JSUk6deqUZs2apfr163vsk9U/KyQkRE899ZT27NmjM2fOaNOmTbr99ttzfZ9S3j4LYWFhOnTokOrWrasff/xRCQkJOnHihMaNG6dSpUo5du6ylCpVSu+884727t3r/ix88sknKl++fK7vL6c+bMOGDZMxRo0bN9aoUaN0/PhxnT59WgsXLlRgYGCux8yqkmV91rIEBwdr5cqVWr16dbZtt912m1JTU/Xrr7+6113Y1ywoKEjGGL399tt64IEHtGXLFiUnJysiIkIPPfRQtnaULl1an3zyiU6cOKGEhAQtXrxY9erV89inXLlySkpK0meffZbje9m3b59Hm3Ly1FNPqVatWhowYEC2sJZl//79GjNmjMc6Y4ymTZumTp06KTw8XMnJye7vbU790ry9vfX222/r8OHDOn36tFatWqVWrVple621a9dma/OECRNkjNErr7zisf7o0aOaOnWqx7r8/Gz16dNHAwcO1N69e3X27FndcsstFz1PlStXVmhoqGJjYxUbG6uZM2cqICDgovujcBgWFruWOXPmmF9//dVIMsOGDTPGGFOnTp1cnzd27Fhz7tw5U7FiRY/1VapUMampqeb99983kkylSpXMyZMnzZ49e8wrr7xinnjiCTN06FCzYsUKc/PNN1/yNapXr26Sk5PNrl27TLt27UzVqlXNLbfcYtauXWv27NljypYte8nnDxw40BhjzPXXX++xvnjx4iYmJsbMnDnTSDI+Pj5mz5495s8//zSvv/66efzxx83gwYPNwoULzcMPP3zJ1xg/frwxxpjy5ct7rPf19TXGGLNjx45cz+XHH39swsLCzLBhw0yfPn3M22+/bY4fP26OHTtmKlWqlON72rp1qxk6dKh56qmnzJgxY8yaNWuMJNOkSRMzYcIEY4wxw4cPN48++qh59NFHTa1atYwkM3nyZHPgwIEcj7l27Vrz73//27z55psmOjraREdHe3wW2rRpY4wxZv369Wbnzp3mlVdeMS+++KKJjIw0cXFx2c7BhUtePwthYWEmKirKREZGmqlTp5p+/fqZqVOnGmOMWbBggWPnLuuzsWbNGhMfH28+/PBD07dvX/PBBx+YpKQk89tvv5nixYtf8j1mnaM2bdq412X9XK1fv94sXrzYPPPMM2b48OEmKSnJrFixItfPh5eXl4mNjTVhYWHudTVr1jTGGNO2bVvz7LPPmtjYWOPl5eXefvLkSbNu3TqP4xw4cMBMnjzZ/TgoKMgYY0x4eLg5fPiwGTp0qHn22WfNli1bTGpqqqlbt67H8xcvXmyMMR7fk4MHD5oTJ054HDc0NNTExMSYEiVKeDw/ODjYGGPMk08+ecn3u3LlSpOUlGSKFSuWr99lWT9vp06dMsOHDzd9+vQxd911l/szdf75k2Q+//xzY4wx8+bNM/379zdjx4410dHRZu/evR77vvfee+bcuXOmVKlS7nW7d+82qampZtGiRe519erVM8YYExISctk/W1u3bnX/bD377LOmXr167vc2bNgwj8/pli1bTEpKihk7dqzp37+/mTdvntm4cWO2fVkKdSn0BrBcJcs999xjUlNTTYsWLYyUv8B20003GWOMefrppz3Wv/jii8YYY5o2bWokmS5duhhjjLnhhhsuq43333+/OXr0qDnfr7/+aq655ppcn1u1alWTmppq3nvvvWzHNMaY++67z0gy119/vTHGmG7duuW7fS+88ILHsbKWTp06GWOMiYuLy/UY5/8hyFrq1q1rzpw5YwYNGuReFxQUZM6dO2dWrFiR7Y/h+UtISEi20JC1XBjY/P39TVJSkgkPD/cII82bNzepqanm22+/da/L+qNy8OBBU7p0aY99jTGmX79+l3yfef0shIWFGWNMtu/bhx9+aIwxpmPHjo6du5dfftmcPXvWNG/e3GN9586ds/0xzmm5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1JAhQzRixAht2LBBM2bMUFRUlOrVq6dbbrnFPWfThg0blJ6erldffVXly5dXcnKy1q1bl2PlMzo6Wq+//ro++OADrVixQtOnT5e/v7+ee+45xcfHa/Dgwbm+/7zKz2chOjpaPXr0UJUqVbR27VrdfPPN6tmzpxYvXqxFixY5du5GjhypTp066auvvtK9996rNWvWSMron/nggw9q6NChmjJlim3nJD+yqmatW7fW559/7rHtzJkz2rhxo7uvpt23pFqwYIGWLl2qQYMGub8nN910k9q2bauTJ0/m+JzvvvtO48aNU48ePbRmzZpcuwdkSUxMVOfOnbVgwQKtW7dOs2fP1qpVqxQfH69rrrlGrVu31t13323pLifbt2/XF198oSeeeEKlSpXSokWL1KhRIz366KM5/u5LSEjQ5s2bdcMNN+jXX391D3bZvXu3/vzzTzVs2DDb7z4nf7YmTpyofv36aezYsbruuuu0Y8cO3X333bnObYmCV+hDVVmuziU/03qcvyxdutQYY8z8+fOzbWvWrJmZNm2a2b9/v0lKSjJRUVFmxYoVpmvXrnk6ds2aNc0XX3xh9u7da86cOWNOnjxpZs2aZa677rp8tXHixInGGGO2bduW42t8/vnnJiIiwiQmJprY2Fizfv1688QTT+Tp2O+++66JiIgwSUlJJjo62vzwww+mVatWeW5b7dq1zdy5c82pU6dMfHy8WbJkiWnatGmOc0dJMg8++KBZtWqVSUxMNAkJCWbz5s3m5Zdf9tjn6aefNnv37jUpKSnGGGN69+5tpJznYZNkevbsaTZu3GiSk5NNdHS0+e6770z9+vU99smaeiCnqS0unDIipyWvn4WwsDBz6NAhU7duXfPjjz+ahIQEExUVZf73v/95TCfi1LkrUaKEee2118zWrVtNcnKyiYmJMZs3bzYjRowwNWrUuOR7vNS0Hhf+XGVNq5H1vcltKVmypDlz5owxxpiePXtm2z5ixAhjzMXn/rvYtB5vv/12tn1zOn9lypQx48ePN1FRUSYxMdEsXrzY1KtX75Lf+88++8wYk/vcazktZcuWNa+99ppZv369iY2NNWfPnjV//vmn+fHHH82TTz5pSpYs6bG/McZMmzYtx2Pl9H58fHzMO++8Y44ePWqSkpLM6tWrTatWrS762fnggw+MMca8++67HuuzptLo379/jq9t9Wcr671dOFXHNddcY6ZPn27i4uJMbGys+fbbb01AQADTehShxZX5BQBclcLCwnTttddSLbgKjBs3Tk888YSqVKmS5zupAFcL+rABAIq80qVL69FHH9X3339PWMPfEn3YAABFVs2aNXXLLbfokUcekZ+fX46T6wJ/BwQ2AECR1aZNG3355Zc6evSonnnmmTxNEQRcjejDBgAAUMTRhw0AAKCIu6oviZ44ccLS3DoAAAAFJSgo6KL3GL6qA1tkZKRatmxZ2M0AAADIVXh4+EW3cUkUAACgiCOwAQAAFHEENgAAgCKOwAYAAFDEXdWDDgAAQO58fHz04osv6rrrrpOXF7Ucp6Snp2v79u0aPXq0UlNT8/VcAhsAAH9zXbt2VUpKivr27auUlJTCbs5Vq1ixYnr22WfVtWtXzZo1K1/PJUYDAPA3d/vttys0NJSw5rCUlBSFhoaqTZs2+X4ugQ0AgL85Pz8/nTp1qrCb8bcQFRWlsmXL5vt5BDYAAP7mXC6X0tPTC7sZfwvp6elyuVz5fh6BDQAA4AKtW7fWrl27CrsZbgQ2AABwRbj22muVnJysadOm2X5sY4zq1Knjfrxq1So1aNDA9te5XAQ2AABwRfjkk08ueb/NqxmBDQAAFHkPP/ywYmNjtWzZskvuN2bMGB08eFBxcXHasGGDWrdu7d7m5eWlV199VXv37lV8fLw2bNig6tWra/ny5ZKk33//XQkJCfq///s/tWnTRocOHXI/t0GDBgoLC1NMTIy2bdumzp07u7dNnjxZ48aN0/z58xUfH6+1a9eqdu3atr5/AhsAACjS/Pz89NZbb2ngwIG57hseHq5mzZrJ399fX3/9tb799luVKFFCkjRgwAD16NFDnTp1UtmyZfXEE08oKSnJPc1G06ZN5efnp5kzZ3oc08fHRz/88IOWLFmiypUr67nnnlNoaKjq1avn3qdHjx568803VaFCBe3du1fvvPOOjWeAiXMBAMAFRktq5vBrbJb0Yh73ffvttzVp0iQdPnw4131DQ0PdX48aNUpDhw5V/fr1tWXLFvXp00evvPKKdu/eLUnasmVLnl7/pptuUpkyZfTee+/JGKOwsDDNnz/fHdIk6fvvv3dfrg0NDdWoUaPy+O7yhgobAAAospo2bar27dtr9OjR2bZt27ZNCQkJSkhIcF/6HDBggHbs2KHY2FjFxMSoXLlyqlSpkiSpRo0a2rdvX77bULVqVR06dEjGGPe6yMhIVatWzf342LFj7q+TkpJUpkyZfL/OpVBhAwAAHvJa+SoIt99+u2rWrKmDBw9KksqUKSNvb281atRIjRs39ti3devWGjRokNq1a6ft27fLGKPo6Gj3vGeHDh1SnTp1tH379ny14ejRo6pRo4ZcLpc7tAUGBrordQWBChsAACiyPv/8c9WpU0fNmjVTs2bN9Omnn2rBggW66667su3r5+en1NRUnTx5Uj4+PvrPf/7jcVeBiRMn6u2339a1114rSWrSpIn8/f0lZVTILjZQYN26dTp9+rReeeUV+fj4qE2bNurcubNmzJjhwDvOGYENAAAUWcnJyTp+/Lh7SUxM1JkzZxQVFZVt38WLF2vRokXavXu3IiMjdebMGY+RnqNGjdLMmTO1ZMkSxcfHa9KkSfL19ZUkvfHGG5oyZYpiYmL00EMPeRw3JSVFXbp00d13362oqCj973//U69evRQREeHsm7+AuVqX8PDwQm8DCwsLCwtLUV+mTp1a6G34Oy0XO9+Xyi1U2AAAAIo4AhsAAEARR2CzoJ2knZLqF3ZDAADAVY3AZkFpSQ0k+RZ2QwAAwFWNwGZBeua/3oXaCgAAcLUjsFmQFdg4iQAAwElkDQvSMv/lJAIAACeRNSzgkigAACgIBDYLqLABAHD1SkhIUK1atQq7GZLIGpZQYQMAwHlBQUFasGCBoqOj9eeff2rs2LHy9rb3r29YWJhCQkI81vn5+enAgQO2vs7lIrBZQIUNAADn/e9//9OJEydUpUoVNWvWTG3atFH//v0Lu1kFiqxhARU2AACcV6tWLc2cOVNnz57V8ePH9eOPP+q6667Lcd9//etf2rFjh+Lj47Vv3z49+eSTHtu7dOmiTZs2KS4uTnv37tVdd92l4cOHKzg4WOPGjVNCQoLGjh0rSTLGqE6dOpKksmXLasqUKTpx4oT++OMPDRkyRC6XS5LUu3dvrVy5Uh988IGio6O1f/9+dezY0fbzUOg3QXVqcfrm7zdJxkjmziLwXllYWFhYWC53Keo3f3/qqafMlClTjK+vr6latarZunWr6dq1a477durUydSuXdtIMrfddps5ffq0ad68uZFkWrZsaWJjY0379u2Ny+UyVatWNfXr1zeSTFhYmAkJCfE4ljHG1KlTx0gyU6ZMMXPmzDFlypQxQUFBJiIiwjzxxBNGkundu7c5d+6c6dOnj/Hy8jJPP/20OXLkSL7P96Vyi49w2aiwAQCuTqMlNXP4NTZLejFPey5fvlx9+/ZVfHy8fHx89OWXX2rOnDk57rtw4UL31ytWrNCSJUsUHBysTZs2KSQkRF988YWWLl0qSTp69GieXt/Ly0sPP/ywmjdvrsTERCUmJmrkyJHq2bOnvvjiC0lSZGSkJk6cKEmaMmWKxo8fr2uuuUbHjx/P02vk2gZbjvI3RR82AACc5XK5tHjxYn3//fcqXbq0KlasqAoVKmjEiBEaP368EhISlGFrO7EAACAASURBVJCQoFdffVWS1LFjR61Zs0anTp1STEyMOnXqpEqVKkmSatSooX379uW7DZUqVVKJEiUUGRnpXhcZGalq1aq5Hx87dsz9dXJysiSpTJkyl/Wec0KFzQIqbACAq1PeKl8Fwd/fX4GBgRo3bpzOnTun6OhoTZ48WcOHD1eTJk3Ur18/977FixfXd999p169emnu3LlKTU3V7Nmz3X3NDh065O6TdiFjzEXbEBUVpXPnzikoKEg7d+6UJAUGBurIkSM2vtNLozhkARU2AACcderUKe3fv1/9+vWTt7e3ypUrp969e+v333/Ptm/x4sVVokQJnTx5UqmpqerYsaPuvPNO9/ZJkybp8ccfV9u2beVyuVS1alXVr19fknT8+HHVrl07xzakp6dr5syZeuedd1SmTBkFBgZqwIAB+uqrr5x50zkga1hAhQ0AAOc98MAD6tixo06ePKm9e/cqNTVVL76YvQqYmJio559/XjNnzlRMTIweeeQRzZs3z709PDxcjz/+uEaPHq24uDgtX75cQUFBkqSPPvpI3bp1U3R0tD766KNsx37uued0+vRp7d+/X6tWrdLXX3/t7r9WUAp99IdTi9OjRBsqY5ToQ0XgvbKwsLCwsFzuUtRHiV5ty+WMEqXCZgEVNgAAUBAIbBZkBTZOIgAAcBJZwwIGHQAAgIJA1rCAS6IAAKAgENgsoMIGAAAKAlnDAipsAACgIBDYLKDCBgAACgJZwwIqbAAAoCAQ2CygwgYAwNWpRo0aSkhIkJdX0fgrXzRacYWiwgYAgPMaNGigZcuWKTY2Vnv27FHXrl1tf40DBw6oXbt27seHDh2Sn5+f0tPTL/GsgkNgs4AKGwAAzvL29tbcuXM1f/58+fv768knn9RXX32lunXrFnbTChRZwwIqbAAAOKtBgwaqWrWqRo8erfT0dIWFhWn16tXq2bNnjvsPGjRIe/fuVXx8vLZv356tGtenTx/t2LHDvb158+aaOnWqAgMD9cMPPyghIUEvv/yygoKCZIyRt3fGX/kqVapo7ty5OnXqlPbs2aM+ffq4jzls2DB98803mjJliuLj47Vt2zb985//tPU8ENgsoMIGAICzXC5XjusaN26c4/779u1TcHCwypUrpzfffFNfffWVAgICJEndunXTG2+8oV69eqls2bLq0qWLTp06pV69eungwYPq3Lmz/Pz89MEHH2Q77vTp03X48GFVrVpV3bp107vvvqu2bdu6t3fp0kUzZsxQ+fLlNW/ePI0bN86mM5DBx9aj/c1QYQMAXJU6Sgpw+DWOSfox99127dqlEydO6OWXX9bo0aN1xx13qE2bNgoLC8tx/1mzZrm/njlzpl599VXdeOONmjdvnvr06aP3339fGzZskJQR7vKievXqat26te69916dPXtWv//+uyZOnKiePXvq559/liStWrVKixYtkiRNmzZNL7zwQp6OnVcUhyygwgYAgLNSU1PVtWtX3XPPPTp27JgGDhyomTNn6vDhw1q4cKESEhKUkJCgRx55RJLUs2dPbdq0STExMYqJiVHjxo1VqVIlSRkjP/Ma0s5XtWpVRUdHKzEx0b0uMjJS1apVcz8+duyY++ukpCT5+vq6L6fagQqbBVTYAABXpTxUvgrS1q1bdfvtt7sfr169WlOmTNHnn3/usV9gYKAmTJigdu3aac2aNUpPT9emTZvcl1UPHTqkOnXq5PgaxpiLvv7Ro0fl7++vMmXKuENbYGCgjhw5YvGd5R3FIQuyAhsnEQAA5zRp0kQlSpSQr6+vBg4cqCpVqujLL7/Mtl/p0qVljNHJkyclSf/61788+rpNnDhRL730klq0aCFJqlOnjgIDAyVJx48fV+3atXN8/cOHD+vXX3/Vf//7X5UoUUJNmjRRSEiIQkNDbX6nF0fWsChdnEQAAJzUs2dP/fnnnzpx4oTatWunDh066Ny5c9n227lzp0aOHKk1a9bo+PHjatKkiVavXu3ePmvWLL3zzjv6+uuvlZCQoDlz5sjf31+S9N///ldDhw5VTEyMBg4cmO3YPXr0UM2aNXX06FHNnj1bw4YN09Kl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1tlu3rx5DB48mMGDB3PqVNMOcKeUUkop1RwumoBt+/bt9O7dmx49euDr68vEiRNZtWqVp5OllFJKKdXkLpoq0crKSqZNm8batWux2Wy88847HDhw4MxvVEoppZS6yF00ARvAmjVrWLNmjaeToZRSSinVrC6aKlGllFJKqbZKAzallFJKqRZOAzallFJKqRZOAzallFJKqRZOAzallFJKqRZOAzallFJKqRZOAzallFJKqRZOAzallFJKqRZOAzallFJKqRZOAzallFJKqRZOAzallFJKqRZOAzallFJKqRbOCzCeTkRTyczM5MSJE036GZGRkZw6dapJP6Ml0/xr/ttq/tty3kHzr/lvu/lvyrx3796dqKioel83upz/sn37do+nQfOv+df8a941/5p/zX/rzrtWiSqllFJKtXAasCmllFJKtXA24AVPJ+Jit2vXLk8nwaM0/5r/tqot5x00/5r/tpt/T+S9VXc6UEoppZRqDbRKVCmllFKqhdOA7QKMGjWKgwcPcuTIEZ5++mlPJ6fJxcbG8tVXX3HgwAH279/PY489BsDMmTNJSUlh9+7d7N69mzFjxng4pU0jMTGRvXv3snv3brZv3w5AWFgY69at4/Dhw6xbt47Q0FAPp7Jp9OnTx3l+d+/eTV5eHo8//nirPvdvv/02GRkZ7Nu3z7muofP9+uuvc+TIEeLi4hg4cKAnktyo3OV/9uzZxMfHExcXx/LlywkJCQFkKILi4mLndTB37lxPJbtRuMt7Q9f6jBkzOHLkCAcPHmTkyJGeSHKjcpf/xYsXO/OemJjI7t27gdZ37qH+Z11L+P57vIvsxbh4e3ubhIQE07NnT+Pr62v27Nlj+vfv7/F0NeUSHR1tBg4caADTvn17c+jQIdO/f38zc+ZM8+STT3o8fU29JCYmmoiICJd1f/3rX83TTz9tAPP000+bWbNmeTydTb14e3ubtLQ0061bt1Z97m+44QYzcOBAs2/fvjOe7zFjxpjVq1cbwAwdOtRs3brV4+lvivz//Oc/NzabzQBm1qxZzvx3797dZbuLfXGX9/qu9f79+5s9e/YYPz8/06NHD5OQkGC8vb09nofGzn/N5eWXXzbPPfdcqzz3UP+zztPffy1hO09DhgwhISGBxMREKioqWLx4MePHj/d0sppUenq681dVYWEh8fHxxMTEeDhVnjV+/Hje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s9l48cUXSUlJoaioiE2bNjF06NB603/bbbexadMmCgoKKCgoYP369QwbNsxlm3bt2jFr1iwSEhIoKSkhMzOTzZs3c/vtt5/x+PzqV78C4Msvv3RZ7+vry8yZM9m6dSunTp2ipKSE/fv3M336dJftHnvsMYwxDBo0qM6+b7jhBowxTJ061SX/Tz31FD/++CMlJSVkZWXxwQcfEBMT4/Led999F2MMsbGxLFq0iJycHH788UdA2sD84x//YP/+/c7j8s033zBy5Ei3ebzrrruIj4+npKSEAwcO8Nvf/tZ5XdR25ZVXsnz5cmee4+LiuOeee+psFxQUxD//+U8yMzMpKChg7dq15zwZ9ZmuGZvNRkZGBp9++qnb92/YsIHk5GS8vLzOKf3du3fHGMOLL77IlClT2L9/P2VlZUycOLHetG7ZsoWysjKXdaWlpXz22WeEh4e7zIHpqM58/fXXXbZ//fXXCQgI4LbbbnPZtri42KX9pDGGN954g06dOnHzzTfXm6aaHnjgAXbu3ElxcTGnT5/mk08+oX///s7Xw8LCSE5OZt++ffj7+zvX+/r6smvXLjIyMoiKigKqm1w88MAD/PGPfyQxMZGSkhJ27NhRbxXwmT4fqu9FAwcOZO7cuWRkZFBcXOzymTXbsDm2HzBgAHPmzCEjI4O8vDyWLFlCaGgo3t7ePP/88yQlJVFSUsL69evp0aNHnbRFRkbyxhtvkJSURFlZGYmJifzf//0ffn5+LtslJiby3XffccUVV7BhwwaKiopIS0vjxRdfdNnO8b286aabnM1QEhMTna8/+OCD7Nmzh4KCAnJzc9m7dy8vvPBCnXStW7eOcePG4evr6/aYKs/xeNSoS+tZHCVsjz/+uImIiKiz1PxVPnPmTGOMMbt37zbffPONmT59upk1a5YpKioyycnJLvO0TZkyxRhjTPfu3Q1gfHx8zJEjR0xaWpp5/vnnzb333mtmzJhhVq9ebe644w7n+66//npTUlJikpOTzbPPPmuefPJJs3//flNZWWluv/12l7Q7qopWrVplfve735k5c+aYnJwck5CQUOcX6+OPP+7cdtq0aeYPf/iD+fHHH01paam5/vrrndu99957pqyszLz22mvm/vvvN0888YR57733zN///vczHss1a9aYY8eO1VkfERFhsrKyzJtvvmmmT59upk2bZlatWmWMMeb55593bhcVFWUqKircftbcuXNNaWmpyzFevny5KS0tNW+99ZZ58MEHzZ///GeTnZ1tTpw4YcLDw53bvfvuu8YYY/bt22eWLl1qHn74YfP4448bwPzqV78y8fHxZtasWebBBx80f/rTn0xcXJyx2+3mpptucknDXXfdZYwxZteuXeb3v/+9ee6550x6errZuXOnMRKxOZdhw4aZwsJCExcXZ5566inzyCOPmNWrVxtjjPnjH//osu3atWuNMcbMnz/fPPLII2b+/PkmKSnJZGZmnlUJ29leM3PmzDHl5eUmIiLC5f2dO3c2drvdzJ49+5zT3717d2OMMXv37jUnT540zz77rHnooYfM0KFDz/m7uHDhQlNeXm7atWvncmzS0tLqbOvr62vsdruZN2+ec92hQ4fMli1b6mzbq1cvY4wx//M//3PGNLz66qvGbrebDz/80DzyyCNmxowZJjk52Zw+fdr06tXLud3NN99sKisrzWuvveZc99e//tUYY1zmpnTcX3bv3m2OHTtmZsyYYWbMmGESExNNWVmZGT58+Hl9vuNetG/fPrNu3Trz6KOPmmeffdblM2+88cY62+/YscN8/vnn5ne/+5158803jTHGfPLJJ2bOnDlm06ZNZvr06eall14y5eXlZvPmzS5pCw8PNwkJCSYjI8O8+OKLZurUqeatt94yFRUVdZpBJCYmmoSEBHPy5Enz97//3Tz00EPO77xjnk/ATJ482WRnZ5sDBw44m6GMHz/eAOaee+4xxhizYsUK8/DDD5uHH37YvPrqq25L4377298aY4zLvUyXFrF4PAG6tKLFcXOrz5QpU5zbOm56mzZtcqm2GTdunDHGmFmzZjnX1Q7YHFU7v/71rxtMz7Zt20xhYaHp2rWrc11wcLA5fvy4SU1NNT4+PgYwl112mTHGmMWLF7u8/+GHHzbGGJebWkxMjCkrKzN/+9vfXLYNCgoyJ06cMN99951zXU5OjnnjjTfO61geP37crF+/vs56b29vt9VR77zzjsnLyzO+vr7OdV988YU5efKkS/sbHx8fk5WVZVasWOFcd/vttxtjjPmv//ovl31effXVpqKiwrz44ovOdY6AzTHxd83FXTWSn5+fOXDggFmzZo1LGtLS0syRI0dc3tOnTx9TXl5eJ2Dbv3+/+f77712uE8B8/PHHprCw0Dkh/dixY+tc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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# draw part\n",
    "plt.style.use('dark_background')\n",
    "plt.figure(figsize=(10, 10))\n",
    "plt.title('4 vs 8 vs 9 action space in Windy Gridworld', fontsize = 'xx-large')\n",
    "plt.xlabel('Episodes (averaged over 200 experiments)', fontsize = 'xx-large')\n",
    "plt.ylabel('Steps',fontsize = 'xx-large')\n",
    "plt.plot(hist_4, '-', c = 'red', label = '4-action')\n",
    "plt.plot(hist_8, '-', c = 'blue', label = '8-action')\n",
    "plt.plot(hist_9, '-', c = 'green', label = '9-action')\n",
    "plt.legend(loc = 'best', prop = {'size':12})\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "As you can see from the graph, I think 9-action is only a marginal improvement; while 8-action is  much better than 4-action by about 8 time steps"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}